home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import urllib
- import re
- import rb
- EXPS = [
- '\n',
- '\r',
- '<[iI][mM][gG][^>]*>',
- '<[aA][^>]*>[^<]*<\\/[aA]>',
- '<[sS][cC][rR][iI][pP][tT][^>]*>[^<]*(<!--[^>]*>)*[^<]*<\\/[sS][cC][rR][iI][pP][tT]>',
- '<[sS][tT][yY][lL][eE][^>]*>[^<]*(<!--[^>]*>)*[^<]*<\\/[sS][tT][yY][lL][eE]>']
- CEXPS = [ re.compile(exp) for exp in EXPS ]
- SEPARATOR_RE = re.compile("<[fF][oO][nN][tT][ ]*[sS][iI][zZ][eE][ ]*='2'[ ]*>")
-
- class LyrcParser(object):
-
- def __init__(self, artist, title):
- self.artist = artist
- self.title = title
-
-
- def search(self, callback, *data):
- path = 'http://www.lyrc.com.ar/en/'
- wartist = urllib.quote(self.artist)
- wtitle = urllib.quote(self.title)
- wurl = 'tema1en.php?artist=%s&songname=%s' % (wartist, wtitle)
- loader = rb.Loader()
- loader.get_url(path + wurl, self.got_lyrics, callback, *data)
-
-
- def got_lyrics(self, lyrics, callback, *data):
- if lyrics is None:
- callback(None, *data)
- return None
- for exp in CEXPS:
- lyrics = exp.sub('', lyrics)
-
- lyricIndex = SEPARATOR_RE.search(lyrics)
- if lyricIndex is not None:
- callback(self.parse_lyrics(SEPARATOR_RE.split(lyrics, 1)[1]), *data)
- else:
- callback(None, *data)
-
-
- def parse_lyrics(self, lyrics):
- if re.search('<p><hr', lyrics):
- lyrics = re.split('<p><hr', lyrics, 1)[0]
- else:
- lyrics = re.split('<br><br>', lyrics, 1)[0]
- lyrics = re.sub('<[fF][oO][nN][tT][^>]*>', '', lyrics)
- title = re.split('(<[bB]>)([^<]*)', lyrics)[2]
- artist = re.split('(<[uU]>)([^<]*)', lyrics)[2]
- lyrics = re.sub('<[bB]>[^<].*<\\/[tT][aA][bB][lL][eE]>', '', lyrics)
- lyrics = re.sub('<[Bb][Rr][^>]*>', '\n', lyrics)
- titl = '%s - %s\n\n' % (artist, title)
- lyrics = titl + lyrics
- lyrics += '\n\nLyrics provided by lyrc.com.ar'
- return lyrics
-
-
-